//#include <iostream>
//using namespace std;
//#include "RBTree.h"
//
//int main()
//{
//	//TestRBTree1();
//	//TestRBTree2();
//	return 0;
//}
//#include <iostream>
//#include <vector>
//#include <algorithm>
//using namespace std;
//
//int main()
//{
//    int n = 0;
//    cin >> n;
//    vector<int> cost;
//    for (int i = 0; i < n; i++)
//        cin >> cost[i];
//    vector<int> dp(n + 1);
//    dp[0] = dp[1] = 0;
//    for (int i = 2; i < dp.size(); i++)
//    {
//        dp[i] = min(cost[i - 1] + dp[i - 1], cost[i - 2] + dp[i - 2]);
//    }
//    cout << dp[n];
//    return 0;
//}

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;

int Check(string& str1, string str2, vector<string>& strs)
{
    vector<int> s1, s2;
    for (int i = 0; i < strs.size(); i++)
    {
        if (strs[i] == str1)
            s1.push_back(i);
        if (strs[i] == str2)
            s2.push_back(i);
    }
    int ret = strs.size();
    for (int i = 0; i < s1.size(); i++)
    {
        for (int j = 0; j < s2.size(); j++)
        {
            ret = min(ret, abs(s1[i] - s2[j]));
        }
    }
    if (!(s1.size() && s2.size()))
        return -1;
    else
        return ret;
}

int main()
{
    int n = 0;
    cin >> n;
    string str1, str2;
    cin >> str1 >> str2;
    vector<string> strs(n);
    for (int i = 0; i < n; i++)
        cin >> strs[i];
    cout << Check(str1, str2, strs) << endl;
    return 0;
}